#ifndef __OUNIT_CACHE_H__
#define __OUNIT_CACHE_H__

namespace platform
{
	class oUnitDef;

	class oDLL oUnitCache: public CCSAXDelegator
	{
		typedef hash_strmap<oUnitDef*> oUnitDefMap;
	public:
		~oUnitCache();
		void load(const char* filename);
		void unload();
		oUnitDef* getUnitDef(const string& name);
		static oUnitCache& sharedCache();
	protected:
		oUnitCache();
		float _density;
		float _friction;
		float _restitution;
		oUnitDef* _currentDef;
		oUnitDefMap _unitDefs;
		vector<b2Vec2> _vertices;
		CCSAXParser _parser;
	private:
		virtual void textHandler( void *ctx, const char *s, int len );
		virtual void startElement( void *ctx, const char *name, const char **atts );
		virtual void endElement( void *ctx, const char *name );
	};
}

#endif